import fetch from 'isomorphic-fetch'
import {switchFetching, switchMask} from '../global/actions/'

let Host

if (process.env.NODE_ENV === 'production') {
  Host = 'https://yhcsx.yonghui.cn/s2b/wap/'
} else if (process.env.NODE_ENV === 'test') {
  Host = 'https://yhcsxtest.yonghui.cn/s2b/wap/'
} else {
  Host = 'https://yhcsxtest.yonghui.cn/s2b/wap/'
    //Host ='http://10.67.52.231:8087/s2b/wap/'
}

function url(url) {
  return Host + url
}

function ApiFetch(api, params = {}, isJson = false, showMask = true) {
  let headers = new Headers(),
    body = new FormData()

  headers.append('login-token', sessionStorage.getItem('token'))

  if (!isJson) {
    for (let i in params) {
      body.append(i, params[i])
    }
  } else {
    headers.append('content-type', 'application/json')
    body = JSON.stringify(params)
  }

  return (dispatch, getState) => {
    let timeout

    if (showMask) {
      timeout = setTimeout(() => {
        dispatch(switchMask(true))
      }, 200)
    }

    dispatch(switchFetching(true))

    return fetch(api.url, Object.assign({}, api.config, {headers, body}))
      .then(res => {
        clearTimeout(timeout)

        dispatch(switchMask(false))
        dispatch(switchFetching(false))

        return res.json()
      })
  }
}

export default {
  fetch: ApiFetch,

  API_GET_LOGIN_TOKEN: {
    url: url('tokenCreate'),
    config: {method: 'post'}
  },

  API_SEND_SMS: {
    url: url('buyer/telephoneCode'),
    config: {method: 'post'}
  },

  API_BIND_MOBILE: {
    url: url('buyer/telephoneBind'),
    config: {method: 'post'}
  },

  // 获取购物车数量
  API_GET_CART_COUNT: {
    url: url('buyer/goodsCartCount'),
    config: {method: 'post'}
  },

  // 加入购物车
  API_ADD_TO_CART: {
    url: url('buyer/addGoodsCart'),
    config: {method: 'post'}
  },

  // 获取商品分类目录
  API_GET_PRODUCT_CLASS: {
    url: url('buyer/topClass'),
    config: {method: 'post'}
  },

  // 根据目录获取商品列表
  API_GET_PRODUCT_FROM_CLASS: {
    url: url('buyer/goodsFromClass'),
    config: {method: 'post'}
  },

  // 获取购物车信息
  API_GET_CART_ITEM: {
    url: url('buyer/goodsCartList'),
    config: {method: 'post'}
  },

  // 删除购物车商品
  API_DEL_CART_ITEM: {
    url: url('buyer/delGoodsCart'),
    config: {method: 'post'}
  },

  // 勾选购物车商品
  API_SELECT_CART_ITEM: {
    url: url('buyer/choose'),
    config: {method: 'post'}
  },

  // 切换购物车
  API_SWITCH_CART_ITEM: {
    url: url('buyer/typeChangeWithGoodsCart'),
    config: {method: 'post'}
  },

  // 确认下单
  API_CONFIRM_ORDER: {
    url: url('buyer/confirmOrder'),
    config: {method: 'post'}
  },

  API_SUBMIT_ORDER: {
    url: url('buyer/holdOrder'),
    config: {method: 'post'}
  },

  API_CANCEL_ORDER: {
    url: url('buyer/cancelOrder'),
    config: {method: 'post'}
  },

    // 获取微信支付参数
  API_REQUEST_PAYMENT: {
    url: url('buyer/payByOrderId'),
    config: {method: 'post'}
  },

  // 发起信控支付
  API_REQUEST_CREDIT_PAYMENT: {
    url: url('buyer/userCreditPay'),
    config: {method: 'post'}
  },

  // 订单列表
  API_GET_ORDER_LIST: {
    url: url('buyer/orderList'),
    config: {method: 'post'}
  },

  // 订单详情
  API_GET_ORDER_DETAIL: {
    url: url('buyer/orderDetail'),
    config: {method: 'post'}
  },

  // 申请退款
  API_SUBMIT_REFUND: {
    url: url('buyer/returnOrder'),
    config: {method: 'post'}
  },

  // 获取站点列表
  API_GET_STATION_LIST: {
    url: url('buyer/userSite'),
    config: {method: 'post'}
  },

  // 更改站点
  API_CHANGE_STATION: {
    url: url('buyer/changeSite'),
    config: {method: 'post'}
  },

  API_CHANGE_STATION_IN_CART: {
    url: url('buyer/siteChangeWithGoodsCart'),
    config: {method: 'post'}
  },

    // 获取首页数据
  API_GET_INDEX_DATA: {
    url: url('buyer/index1'),
    config: {method: 'post'}
  },

    // 登录认证
  API_LOGIN_AUTH: {
    url: url('auth'),
    config: {method: 'get'}
  },

    // 获取商品详情数据
  API_GET_DETAIL_DATA: {
    url: url('buyer/getGoods'),
    config: {method: 'post'}
  },

  // 设置预售提醒
  API_SET_NOTICE: {
    url: url('buyer/advanceRemind'),
    config: {method: 'post'}
  },

  // 获取我的信息
  API_GET_USER_INFO: {
    url: url('buyer/userInformation'),
    config: {method: 'post'}
  },

  // 发送验证码
  API_GET_LOGIN_CODE: {
    url: url('buyer/telephoneCode'),
    config: {method: 'post'}
  },

  // 获取appid
  API_GET_WECHAT_CONFIG: {
    url: url('buyer/wxInitConfig'),
    config: {method: 'post'}
  },

    // 获取分享参数
  API_GET_WECHAT_SHARE: {
    url: url('buyer/share'),
    config: {method: 'post'}
  },

  // 绑定手机
  API_GET_BIND_STYLE: {
    url: url('buyer/telephoneBind'),
    config: {method: 'post'}
  },

  // 搜索
  API_DO_SEARCH: {
    url: url('buyer/search'),
    config: {method: 'post'}
  },

  // 领券中心
  API_GET_ALL_VOUCHER: {
    url: url('buyer/getVBC'),
    config: {method: 'post'}
  },

  // 领券
  API_GET_ONE_VOUCHER: {
    url: url('buyer/lottery'),
    config: {method: 'post'}
  },

  API_GET_MY_VOUCHER: {
    url: url('buyer/getBV'),
    config: {method: 'post'}
  },

  // 咏乐汇
  API_GET_TOPIC: {
    url: url('buyer/secondPage'),
    config: {method: 'post'}
  },

   // 天天特价
  API_GET_SALES: {
    url: url('buyer/ttt'),
    config: {method: 'post'}
  },

  // 获取二维码
  API_GET_QR_CODE: {
    url: url('buyer/qr'),
    config: {method: 'post'}
  },

// 获取授信额度
  API_GET_CREDIT: {
    url: url('buyer/myCredit'),
    config: {method: 'post'}
  },

// 授信获取手机号信息
  API_GET_TEL_NUMBER: {
    url: url('buyer/gotoSendCode'),
    config: {method: 'post'}
  },

//  获取验证码
  API_GET_CODE: {
    url: url('buyer/sendCode'),
    config: {method: 'post'}
  },

//  验证验证码是否正确
  API_VERIFY_CODE: {
    url: url('buyer/validateCode'),
    config: {method: 'post'}
  },

// 设置支付密码
  API_SET_PASSWORD: {
    url: url('buyer/setUpCreditPwd'),
    config: {method: 'post'}
  },

//  获取授信明细
  API_CREDIT_DETAIL: {
    url: url('buyer/creditDetail'),
    config: {method: 'post'}
  },

  // 获取配送地址列表
  API_GET_ADDRESS_LIST_DATA: {
    url: url('buyer/homeAreaList'),
    config: {method: 'post'}
  },

    // 删除配送地址
  API_DELETE_ADDRESS: {
    url: url('buyer/homeAreaDel'),
    config: {method: 'post'}
  },

  // 切换配送地址
  API_CHANGE_ADDRESS: {
    url: url('buyer/changeConfirmOrderAddress'),
    config: {method: 'post'}
  },

  // 获取编辑配送地址信息
  API_GET_ADDRESS_INFO: {
    url: url('buyer/homeAreaEdit'),
    config: {method: 'post'}
  },

  // 提交修改或新增的地址信息
  API_SUBMIT_ADDRESS: {
    url: url('buyer/addHomeArea'),
    config: {method: 'post'}
  }
}
